﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using LogicaNegocio;
using Entities;

namespace Presentacion.Informes
{
    public partial class PedidosPorCliente : System.Web.UI.Page
    {
        private GestorFacturas gFacturas;
        private static bool esFiltrada = false;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.Page.Title = "Informe - Pedidos por cliente";
                cargarGrilla();
            }
            this.Page.Title = "Informe - Pedidos por cliente";
        }
        private void cargarGrilla()
        {
            gFacturas = new GestorFacturas();
            List<Factura> lstFacturas = gFacturas.ObtenerTodosInforme();
            if (lstFacturas != null)
            {
                grdPedidos.DataSource = lstFacturas;
                string[] claves = { "idFactura" };
                grdPedidos.DataKeyNames = claves;
                grdPedidos.DataBind();
            }
            else
            {
                grdPedidos.DataSource = null;
                grdPedidos.DataBind();
            }
        }

        protected void btnFiltrar_Click(object sender, EventArgs e)
        {
            cargarGrillaFiltrada();
        }

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtIdCliente.Text = string.Empty;
            txtMontoMax.Text = string.Empty;
            calendarDesde.SelectedDate = new DateTime();
            calendarHasta.SelectedDate = new DateTime();
        }

        private void cargarGrillaFiltrada()
        {
            try
            {
                esFiltrada = true;
                int? idCliente = null;
                float? montoMaximo = null;
                DateTime? fechaDesde = null;
                DateTime? fechaHasta = null;

                gFacturas = new GestorFacturas();
                if (!string.IsNullOrEmpty(txtIdCliente.Text))
                    idCliente = Convert.ToInt32(txtIdCliente.Text);
                if (!string.IsNullOrEmpty(txtMontoMax.Text))
                    montoMaximo = (float)Convert.ToDouble(txtMontoMax.Text);
                if (calendarDesde.SelectedDate != DateTime.MinValue)
                    fechaDesde = calendarDesde.SelectedDate;
                if (calendarHasta.SelectedDate != DateTime.MinValue)
                    fechaHasta = calendarHasta.SelectedDate;

                List<Factura> lstFacturas = gFacturas.ObtenerTodosInformeFiltrado(idCliente, montoMaximo, fechaDesde, fechaHasta);
                if (lstFacturas != null)
                {
                    grdPedidos.DataSource = lstFacturas;
                    string[] claves = { "idFactura" };
                    grdPedidos.DataKeyNames = claves;
                    grdPedidos.DataBind();
                }
                else
                {
                    grdPedidos.DataSource = null;
                    grdPedidos.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblMensajeError.Text = ex.Message;                
            }

        }

        protected void grdPedidos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grdPedidos.PageIndex = e.NewPageIndex;
            if (esFiltrada)
                cargarGrillaFiltrada();
            else
                cargarGrilla();
        }
    }
}